package busco

// 主要用于运维平台快速开发对某类独立数据的执行界面。例如服务器列表，封禁列表等
// 如无法达到需求，请使用传统方式实现
// 无法实现的场景之一：数据显示需要多个表的联合查询，需要自定义协议处理
// @schema_export --ident=schema --json --config=数据表
// @schema_go
// @cache_go
// @cache_ts
// @alias 数据表
type B数据表 struct {
	// @alias 数据库
	S数据库 string

	// @alias 表名
	B表名 string

	// @alias 标题
	B标题 string

	// @alias 协议
	X协议 string
}

// @schema_export --ident=schema --json --config=数据表
// @schema_go
// @cache_go
// @cache_ts
// @alias 数据表_读取
type B数据表_读取 struct {
	B数据表

	// @alias 字段信息
	Z字段信息 []*S数据表读取信息

	// 用于预防客户端提交过大的限制
	// @alias 行数最大值
	H行数最大值 int

	// 当作为数据关联时，在引用列表中，显示的格式
	// @alias 格式
	G格式 string

	// @alias 过滤器
	G过滤器 []*S数据表过滤项信息
}

// @schema_export --ident=schema --json --config=数据表
// @schema_go
// @cache_go
// @cache_ts
// @alias 数据表_读取项
type B数据表_读取项 struct {
	B数据表

	// @alias 字段信息
	Z字段信息 []*S数据表读取项信息
}

// @schema_export --ident=schema --json --config=数据表
// @schema_go
// @cache_go
// @cache_ts
// @alias 数据表_创建
type B数据表_创建 struct {
	B数据表

	// @alias 字段信息
	Z字段信息 []*S数据表创建信息
}

// @schema_export --ident=schema --json --config=数据表
// @schema_go
// @cache_go
// @cache_ts
// @alias 数据表_修改
type B数据表_修改 struct {
	B数据表

	// @alias 字段信息
	Z字段信息 []*S数据表修改信息
}

// @schema_export --ident=schema --json --config=数据表
// @schema_go
// @cache_go
// @cache_ts
// @alias 数据表_删除
type B数据表_删除 struct {
	B数据表

	// 需要[删除时间]字段
	// @alias 软删除
	R软删除 bool
}

type S数据表读取信息 struct {
	// @alias 名称
	M名称 string
	// 需要从数据表种读取的字段
	// @alias 读取
	D读取 bool
	// 设置是否需要在列表中显示，某些字段例如_id有时候不需要显示
	// @alias 显示
	X显示 bool
	// @alias 宽度
	K宽度 int
	// @alias 排序
	P排序 bool
	// @alias 提示
	T提示 string
	// 允许使用过滤器
	// @alias 过滤
	G过滤 bool
}

type S数据表读取项信息 struct {
	// @alias 名称
	M名称 string
	// 需要从数据表种读取的字段
	// @alias 读取
	D读取 bool
	// 设置是否需要在列表中显示，某些字段例如_id有时候不需要显示
	// @alias 显示
	X显示 bool
	// @alias 排序
	P排序 bool
	// @alias 提示
	T提示 string
}

type S数据表读取过滤器 struct {
	// 在界面上显示的名字
	// @alias 名称
	M名称 string
	// 必须为空或者json字符串；使用mongo的查询规则
	// 以后可考虑把查询规则配置化
	// @alias 匹配
	P匹配 string
}

type S数据表创建信息 struct {
	// @alias 名称
	M名称 string
	// @alias 显示
	X显示 bool
	// @alias 修改
	X修改 bool
	// @alias 初始值
	C初始值 string
	// @alias 必填
	B必填 bool
	// 服务器校验使用
	// @alias 条件
	T条件 map[string]string `link:"数据表条件"`
}

type S数据表修改信息 struct {
	// @alias 名称
	M名称 string
	// @alias 读取
	D读取 bool
	// @alias 显示
	X显示 bool
	// @alias 修改
	X修改 bool
	// @alias 必填
	B必填 bool
	// @alias 条件
	T条件 []interface{} `_type:"数据表条件"`
}
